package br.com.sgi.util;
  
import java.util.List;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.model.SelectItem;

import org.ajax4jsf.util.SelectUtils;
  
/** 
* Exemplo de Converter. 
*/  
public class ComboboxConverter implements Converter {  
	
	

  
    /** 
     * Faz o processo: TELA => BEAN 
     * 
     * Quando um elemento de um combo é selecionado na tela, e portanto, retornado 
     * ao bean como uma instância de uma entidade por exemplo. 
     * @param context 
     * @param component 
     * @param value 
     * @return 
     */  
    @Override  
    public Object getAsObject(FacesContext context, UIComponent component, String value) {  
        if (value != null && !value.isEmpty()) {  
        	
        	value = value.trim();
			if (value.length() > 0) {
				List<SelectItem> selectItems = SelectUtils.getSelectItems(context, component);
				ICombobox comboBox = null;
				for (SelectItem selectItem : selectItems) {
					if (selectItem.getValue() instanceof ICombobox) {
						comboBox = (ICombobox) selectItem.getValue();
					}
					if (comboBox.getValue().toString().equals(value)) {
						return comboBox;
					}
				}
			}
        }  
  
        return null;  
    }  
  
    /** 6
     * Faz o processo BEAN => TELA 
     * 
     * Quando um elemento do bean é carregado e deverá ser marcado no combo. 
     * @param context 
     * @param component 
     * @param value 
     * @return 
     */  
    @Override  
    public String getAsString(FacesContext context, UIComponent component, Object value) {  
    	if (value == null) {
			return "";
		}
		if (value instanceof ICombobox) {
			Object value2 = ((ICombobox) value).getValue();
			if (value2 != null) {
				value2 = value2.toString();
				return value2.toString();
			}
		}
		return "";
    }  
  
}